home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / feel0_89.lha / Feel / Modules / lock.em < prev    next >
Text File  |  1993-07-15  |  1KB  |  61 lines

  1. ;; Eulisp Module
  2. ;; Author: pab
  3. ;; File: sems.em
  4. ;; Date: Tue May  5 23:23:43 1992
  5. ;;
  6. ;; Project:
  7. ;; Description: 
  8. ;;
  9.  
  10. (defmodule lock
  11.   (extras0
  12.    macros0
  13.    defs
  14.    init
  15.    sems
  16.    thread
  17.    telos1
  18.    )
  19.   ()
  20.   (expose threads)
  21.  
  22.   (defstruct <lock> ()
  23.     ((real-sem initform (make-primitive-semaphore)
  24.            reader semaphore-real-sem))
  25.     constructor make-lock
  26.     predicate semaphore-p)
  27.   
  28.            
  29.   (defgeneric lock (sem))
  30.   (defgeneric unlock (sem))
  31.   (defgeneric initialize-lock (sem))
  32.     
  33.   (defmethod lock ((x <object>))
  34.     (error "Wrong class for lock" <Internal-Error>))
  35.   
  36.   (defmethod lock ((x <lock>))
  37.     (lock-with-signals (semaphore-real-sem x))
  38.     x)
  39.  
  40.   (defmethod unlock ((x <object>))
  41.     (error "Wrong class for unlock" <Internal-Error>))
  42.   
  43.   (defmethod unlock ((x <lock>))
  44.     (close-primitive-semaphore (semaphore-real-sem x))
  45.     x)
  46.  
  47.   (defmethod initialize-lock ((x <object>))
  48.     (error "Wrong class for initialize-semaphore" <Internal-Error>))
  49.   
  50.   (defmethod initialize-lock ((x <lock>))
  51.     (initialize-primitive-semaphore (semaphore-real-sem x))
  52.     x)
  53.  
  54.   (export make-lock lock unlock <lock> semaphore-p initialize-lock)
  55.  
  56.   ;; end module
  57.   )
  58.  
  59.  
  60.  
  61.